home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
pascal
/
shazam.exe
/
GCONVERT.IMP
< prev
next >
Wrap
Text File
|
1992-09-01
|
41KB
|
1,184 lines
{*******************************************************************
GCONVERT.IMP
*******************************************************************}
{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BOOLEAN
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}
{===================================================================
0/1 ==> "True "/"False"
===================================================================}
function BooleanTrueFalse ( B : boolean ) : string ;
begin
if B then
BooleanTrueFalse := 'True '
else
BooleanTrueFalse := 'False' ;
end ;
{===================================================================
0/1 ==> "Yes"/"No "
===================================================================}
function BooleanYesNo ( B : boolean ) : string ;
begin
if B then
BooleanYesNo := 'Yes'
else
BooleanYesNo := 'No ' ;
end ;
{===================================================================
0/1 ==> "On "/"Off"
===================================================================}
function BooleanOnOff ( B : boolean ) : string ;
begin
if B then
BooleanOnOff := 'On '
else
BooleanOnOff := 'Off' ;
end ;
{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
NUMBER <-> STRING
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}
{===================================================================
REAL "999.9" --> 999.9
===================================================================}
function StrToReal ( S : string ) : real ;
var
R : real ;
code : integer ;
begin
StrToReal := 0 ;
Val ( S , R , code ) ;
if code = 0 then
StrToReal := R ;
end ;
{===================================================================
RANGE - need this cause "Val" isn't too bright
===================================================================}
function Range ( S : string ; Low , High : real ) : boolean ;
var
R : real ;
begin
R := StrToReal ( S ) ;
Range := ( R >= Low ) and
( R <= High ) ;
end ;
{===================================================================
BYTE "999" -> 999
===================================================================}
function StrToByte ( S : string ) : byte ;
var
b : byte ;
code : integer ;
begin
StrToByte := 0 ;
if not Range ( S , 0 , 255 ) then EXIT ;
Val ( S , b , code ) ;
StrToByte := b ;
end ;
{===================================================================
INTEGER "999" --> 999
===================================================================}
function StrToShort ( S : string ) : shortint ;
var
i : shortint ;
code : integer ;
begin
StrToShort := 0 ;
Val ( S , i , code ) ;
if not Range ( S , -128 , 127 ) then EXIT ;
StrToShort := i ;
end ;
{===================================================================
INTEGER "999" --> 999
===================================================================}
function StrToInt ( S : string ) : integer ;
var
i : integer ;
code : integer ;
begin
StrToInt := 0 ;
Val ( S , i , code ) ;
if not Range ( S , -32768 , 32767 ) then EXIT ;
StrToInt := i ;
end ;
{===================================================================
WORD "999" --> 999
===================================================================}
function StrToWord ( S : string ) : word ;
var
W : word ;
code : integer ;
begin
StrToWord := 0 ;
Val ( S , W , code ) ;
if not Range ( S , 0 , 65535 ) then EXIT ;
StrToWord := W ;
end ;
{===================================================================
LONG "999" --> 999
===================================================================}
function StrToLong ( S : string ) : longint ;
var
L : longint ;
code : integer ;
begin
StrToLong := 0 ;
Val ( S , L , code ) ;
if not Range ( S , -2147483647 , 2147483647 ) then EXIT ;
StrToLong := L ;
end ;
{===================================================================
Byte,Shortint,Integer,Longint,Real --> String
===================================================================}
function NumToStr ( R : real ) : string ;
var
S1 ,
S2 : string ;
L : longint ;
begin
L := Trunc ( R ) ; { 1.23 --> 1 }
R := Frac ( R ) ; { 1.23 --> .23 }
Str ( L : -1 , S1 ) ;
Str ( R : -1 : 5 , S2 ) ;
SYSTEM.delete ( S2 , 1 , 1 ) ;
S1 := S1 + S2 ;
while S1 [ length ( S1 ) ] = '0' do
SYSTEM.delete ( S1 , length ( S1 ) , 1 ) ;
while S1 [ length ( S1 ) ] = '.' do
SYSTEM.delete ( S1 , length ( S1 ) , 1 ) ;
if S1 = '' then
S1 := '0' ;
NumToStr := S1 ;
end ;
{===================================================================
DOS - When 100's or Day of week can be ignored.
===================================================================}
procedure GetDateTime ( VAR DT : DateTime ) ;
var
Sec100 ,
DoW : word ;
begin
GetDate ( DT.Year , DT.Month , DT.Day , DoW ) ;
GetTime ( DT.Hour , DT.Min , DT.Sec , Sec100 ) ;
end ;
{|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
VALIDITY CHECKS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}
{===================================================================
LEAP YEAR - forces century if year less than 100
===================================================================}
function IsLeapYear ( Y : longint ) : boolean ;
var
DT : DateTime ;
begin
GetDateTime ( DT ) ;
if Y < 100 then
inc ( Y , ( DT.Year div 100 ) * 100 ) ;
IsLeapYear := Y mod 4 = 0 ;
end ;
{===================================================================
YEAR - greater than 0
===================================================================}
function IsYearValid ( Y : word ) : boolean ;
begin
IsYearValid := Y > 0 ;
end ;
{===================================================================
MONTH - 1 and 12
===================================================================}
function IsMonthValid ( M : word ) : boolean ;
begin
IsMonthValid := ( M >= 1 ) and ( M <= 12 ) ;
end ;
{===================================================================
DAY - as per month
===================================================================}
function MaxDayForMonth ( M , Y : word ) : word ;
begin
case M of
2 :
if IsLeapYear ( Y ) then
MaxDayForMonth := 29
else
MaxDayForMonth := 28 ;
4 ,
6,
9,
11 : MaxDayForMonth := 30 ;
else
MaxDayForMonth := 31 ;
end ;
end ;
{===================================================================
DAY - Valid for month
===================================================================}
function IsDayValid ( M , D , Y : word ) : boolean ;
begin
IsDayValid := ( D >= 1 ) and
( D <=